home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / idd.zip / DRIVER.H < prev    next >
C/C++ Source or Header  |  1989-02-13  |  3KB  |  152 lines

  1. /*
  2.  *    driver.h ->    Device Driver Header File
  3.  */
  4.  
  5.  
  6. /*
  7.  *    Status Word Bits
  8.  */
  9. #define    Error    0x8000
  10. #define    Busy    0x0100
  11. #define    Done    0x0080
  12.  
  13.  
  14. /*
  15.  *    Media Descriptor Byte Bits
  16.  */
  17. #define    TwoSided    1
  18. #define    EightSector    2
  19. #define    Removable    4
  20.  
  21.  
  22. /*
  23.  *    Error Return Codes
  24.  */
  25. #define    WriteProtect    0
  26. #define    UnknownUnit    1
  27. #define    DeviceNotReady    2
  28. #define    UnknownCommand    3
  29. #define    crcError    4
  30. #define    BadLength    5
  31. #define    SeekError    6
  32. #define    UnknownMedia    7
  33. #define    SectorNotFound    8
  34. #define    NoPaper        9
  35. #define    WriteFault    10
  36. #define    ReadFault    11
  37. #define    GeneralFailure    12
  38.  
  39.  
  40. /*
  41.  *    pseudo types
  42.  */
  43. typedef unsigned char    BYTE;
  44. typedef unsigned int    WORD;
  45. typedef void far    *DWORD;
  46.  
  47.  
  48. /*
  49.  *    parameter structures
  50.  */
  51. typedef struct
  52.     {
  53.     BYTE    Length;        /*  Request Header length    */
  54.     BYTE    Unit;        /*  Unit Code            */
  55.     BYTE    Command;    /*  Command Code        */
  56.     WORD    Status;        /*  Status            */
  57.     BYTE    reserved[8];    /*  DOS Reserved Area        */
  58.     }
  59.     Request;
  60.  
  61. typedef struct
  62.     {
  63.     Request    InitReq;    /*  Request Header        */
  64.     BYTE    nUnits;        /*  number of units        */
  65.     DWORD    EndAddr;    /*  Ending Address        */
  66.     DWORD    BPBarray;    /*  ptr to BPB array        */
  67.     }
  68.     InitParms;
  69.  
  70. typedef struct
  71.     {
  72.     Request    MediaReq;    /*  Request Header        */
  73.     BYTE    MediaDesc;    /*  Media Descriptor        */
  74.     BYTE    ReturnCode;    /*  Return Code            */
  75.     }
  76.     MediaParms;
  77.  
  78. typedef struct
  79.     {
  80.     Request    BPBReq;        /*  Request Header        */
  81.     BYTE    MediaDesc;    /*  Media Descriptor        */
  82.     DWORD    Transfer;    /*  Transfer Address        */
  83.     DWORD    BPBTable;    /*  ptr to BPB table        */
  84.     }
  85.     BPBParms;
  86.  
  87. typedef struct
  88.     {
  89.     Request    InOutReq;    /*  Request Header        */
  90.     BYTE    MediaDesc;    /*  Media Descriptor        */
  91.     DWORD    Transfer;    /*  Transfer Address        */
  92.     WORD    Count;        /*  Byte/Sector Count        */
  93.     WORD    Start;        /*  Starting Sector Number    */
  94.     }
  95.     InOutParms;
  96.  
  97. typedef struct
  98.     {
  99.     Request    ndInputReq;    /*  Request Header        */
  100.     BYTE    theByte;    /*  Byte Read From Device    */
  101.     }
  102.     ndInputParms;
  103.  
  104. typedef struct
  105.     {
  106.     Request    StatusReq;    /*  Request Header        */
  107.     }
  108.     StatusParms;
  109.  
  110. typedef struct
  111.     {
  112.     Request    FlushReq;    /*  Request Header        */
  113.     }
  114.     FlushParms;
  115.  
  116. typedef struct
  117.     {
  118.     WORD    BytesPerSector;
  119.     BYTE    SecsPerAllocUnit;
  120.     WORD    ReservedSectors;
  121.     BYTE    FATCount;
  122.     WORD    RootDirEntries;
  123.     WORD    SectorsPerLogical;
  124.     BYTE    MediaDesc;
  125.     WORD    SecsPerFAT;
  126.     }
  127.     BPB;
  128.  
  129. typedef struct
  130.     {
  131.     BYTE    BootJump[3];
  132.     BYTE    Name[8];
  133.     BPB    BootBPB;
  134.     WORD    SecsPerTrack;
  135.     WORD    HeadCount;
  136.     WORD    HiddenCount;
  137.     }
  138.     BootSector;
  139.  
  140.  
  141. /*
  142.  *    externals
  143.  */
  144. extern Request    ReqHdr;        /*  current Request Header    */
  145.  
  146. extern DWORD EndAddr(void);        /*  returns Ending Address    */
  147.  
  148.  
  149. /*
  150.  *    END of driver.h
  151.  */
  152.